React Bootstrap is one version of Bootstrap made for React.
It’s a set of React components that have Bootstrap styles.
In this article, we’ll look at how to add spinners with React Bootstrap.
Spinners
Spinners are used to show the loading state of our data.
To use it, we can use the Spinner
component:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Spinner from "react-bootstrap/Spinner";
export default function App() {
return (
<>
<Spinner animation="border" role="status">
<span className="sr-only">Loading...</span>
</Spinner>
</>
);
}
We add the Spinner
with the animation
prop.
border
means that we have a circle that spins as the spinner.
We can also add text for screen readers with the sr-only
class.
It’ll be read by screen readers but users won’t see them.
Animations
We can also set the animation
prop to grow
.
Then we’ll get a throbbing spinner:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Spinner from "react-bootstrap/Spinner";
export default function App() {
return (
<>
<Spinner animation="grow" role="status">
<span className="sr-only">Loading...</span>
</Spinner>
</>
);
}
Variants
There’re various styling variants for spinners.
All the common Bootstrap ones are available.
For instance, we can write:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Spinner from "react-bootstrap/Spinner";
export default function App() {
return (
<>
<Spinner animation="border" variant="primary" />
<Spinner animation="border" variant="secondary" />
<Spinner animation="border" variant="success" />
<Spinner animation="border" variant="danger" />
<Spinner animation="border" variant="warning" />
<Spinner animation="border" variant="info" />
<Spinner animation="border" variant="light" />
<Spinner animation="border" variant="dark" />
<Spinner animation="grow" variant="primary" />
<Spinner animation="grow" variant="secondary" />
<Spinner animation="grow" variant="success" />
<Spinner animation="grow" variant="danger" />
<Spinner animation="grow" variant="warning" />
<Spinner animation="grow" variant="info" />
<Spinner animation="grow" variant="light" />
<Spinner animation="grow" variant="dark" />
</>
);
}
Then we get spinners with different colors and animation styles.
Sizes
We can also change the sizes of the spinner,
For instance, we can write:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Spinner from "react-bootstrap/Spinner";
export default function App() {
return (
<>
<Spinner animation="border" size="sm" />
<Spinner animation="border" />
<Spinner animation="grow" size="sm" />
<Spinner animation="grow" />
</>
);
}
to set the size with the size
prop.
sm
means smaller than the normal size.
We can also write lg
to make them bigger than normal.
Buttons
We can put spinners in buttons.
For example, we can write:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Spinner from "react-bootstrap/Spinner";
import Button from "react-bootstrap/Button";
export default function App() {
return (
<>
<Button variant="success" disabled>
<Spinner as="span" animation="border" size="sm" />
<span className="sr-only">Loading...</span>
</Button>{" "}
<Button variant="success" disabled>
<Spinner as="span" animation="grow" size="sm" />
Loading...
</Button>
</>
);
}
to create buttons with the Spinner
inside.
We make them small so they’re sized the same as the button text.
Tables
We can add tables with React Bootstrap.
It comes with the Table
component to let us create simple tables:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Table from "react-bootstrap/Table";
export default function App() {
return (
<>
<Table striped bordered hover>
<thead>
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>james</td>
<td>smith</td>
</tr>
<tr>
<td>2</td>
<td>mary</td>
<td>jones</td>
</tr>
<tr>
<td>3</td>
<td colSpan="2">larry</td>
</tr>
</tbody>
</Table>
</>
);
}
We just wrap the Table
around the regular table elements to create a table.
striped
makes the rows alternate in color.
bordered
adds borders to the rows.
hover
changes the color of the row when we highlight it.
Small Table
We can set the size
prop to change the size of the table.
For instance, we can write:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Table from "react-bootstrap/Table";
export default function App() {
return (
<>
<Table striped bordered hover size="sm">
<thead>
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>james</td>
<td>smith</td>
</tr>
<tr>
<td>2</td>
<td>mary</td>
<td>jones</td>
</tr>
<tr>
<td>3</td>
<td colSpan="2">larry</td>
</tr>
</tbody>
</Table>
</>
);
}
Then the rows are smaller than usual.
Dark Table
We can set the variant
prop to dark
to make it dark:
import React from "react";
import "bootstrap/dist/css/bootstrap.min.css";
import Table from "react-bootstrap/Table";
export default function App() {
return (
<>
<Table striped bordered hover variant="dark">
<thead>
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>james</td>
<td>smith</td>
</tr>
<tr>
<td>2</td>
<td>mary</td>
<td>jones</td>
</tr>
<tr>
<td>3</td>
<td colSpan="2">larry</td>
</tr>
</tbody>
</Table>
</>
);
}
Now all the rows are dark.
Conclusion
We can add spinners to show that something is loading.
Tables can be added with the Table
component.